# -*- coding: utf-8 -*-
# @Time    : 2019/10/21 16:16
# @Author  : LiHaowen
# @Email   : lihaowen2017@163.com
# @File    : read_big_file.py

# 500G(一行) 文件 读取写入数据库


def myreadlines(f, newline):  # 句柄， 分割符
    buf = ""  # 类似于缓存
    while True:
        while newline in buf:  # 查询分割符是否在缓存数据中
            pos = buf.index(newline)  # 定位缓存中分隔符位置
            yield buf[:pos]  # 输出分割符之前的语句
            buf = buf[pos + len(newline):]  # 缓存数据进行截断操作
        chunk = f.read(4096)  # 读取文件
        if not chunk:
            # 已经读到文件结尾 ，文件边缘判断，边界条件 结尾时没有分割符
            yield buf  # 输出最后一句
            break
        buf += chunk  # 文件加入到缓存


with open("input.txt") as f:
    for line in myreadlines(f, "{|}"):
        print(line)